package ctrlayer;
import modellayer.*;
import java.io.*;
import java.net.URISyntaxException;
import java.net.URL;

/**
 * Write a description of class VareCtr here.
 * 
 * @author Søren Kaae 
 * @version 09.12.2014
 */
public class VareCtr
{
    private VareCont vCon;
    private PersonCtr pCtr;
    /**
     * Constructor for objects of class VareCtr
     */
    public VareCtr()
    {
        vCon = VareCont.getInstance();
        pCtr = new PersonCtr();
    }

    /**
     * Method createVare
     *
     * @param navn A parameter
     * @param beskrivelse A parameter
     * @param pris A parameter
     * @param stregkode A parameter
     * @param beholdning A parameter
     * @param minbeholdning A parameter
     * @param maxbeholdning A parameter
     * @return succes boolean
     */    
    public Vare newVare(String navn, String beskrivelse, double pris, int stregkode, int beholdning, int minBeholdning, int maxBeholdning)
    {
        return new Vare(navn, beskrivelse, pris, stregkode, beholdning, minBeholdning, maxBeholdning);
    }
    
    public void vareIDCounterCheck()
    {
        if(!vCon.getVarer().isEmpty())
        {
            for(int i = 0; i < vCon.getVarer().size(); i++)
            {
                Vare v = vCon.getVarer().get(i);
                if(v.getVareID()> v.getStaticCounter())
                {
                    v.vareIDCounter();
                }
            }
        }
    }

    /**
     * Method createVare
     *
     * @param navn A parameter
     * @param beskrivelse A parameter
     * @param pris A parameter
     * @param stregkode A parameter
     * @param beholdning A parameter
     * @param minBeholdning A parameter
     * @param maxBeholdning A parameter
     * @return The return value
     */
    public boolean createVare(String navn, String beskrivelse, double pris, int stregkode, int beholdning, int minBeholdning, int maxBeholdning)
    {
        boolean succes = false;
        int size = vCon.getVarer().size();
        if(navn.equals(""))
        {
            return succes;
        }
        else
        {
            Vare v = newVare(navn, beskrivelse, pris, stregkode, beholdning, minBeholdning, maxBeholdning);
            vCon.addVare(v);
            if(vCon.getVarer().size() == size + 1);
            {
                succes = true;
            }
        }  
        return succes;
    }

    /**
     * Method sænkBeholdning
     *
     * @param vareID A parameter
     * @param antal A parameter
     * @return The return value
     */
    public boolean sænkBeholdning(int vareID, int antal)
    {
        return vCon.sænkBeholdning(vareID, antal);
    }

    /**
     * Method hævBeholdning
     *
     * @param vareID A parameter
     * @param antal A parameter
     * @return The return value
     */
    public boolean hævBeholdning(int vareID, int antal)
    {
        return vCon.hævBeholdning(vareID, antal);
    }

    /**
     * Method updateVare
     *
     * @param vareID A parameter
     * @param navn A parameter
     * @param beskrivelse A parameter
     * @param stregkode A parameter
     * @return The return value
     */
    public boolean updateVare(int vareID, String navn, String beskrivelse, int stregkode, int minBeholdning, int maxBeholdning)
    {
        if(findVare(vareID) == null)
        {
            return false;
        }
        else
        {
            return vCon.updateVare(vareID, navn, beskrivelse, stregkode, minBeholdning, maxBeholdning);
        }
    }

    /**
     * Method findVare
     *
     * @param vareID A parameter
     * @return The return value
     */
    public Vare findVare(int vareID)
    {
        return vCon.getVare(vareID);
    }

    public Vare findVareMedStregkode(int stregkode)
    {
        return vCon.getVareMedStregkode(stregkode);
    }
    
    /**
     * Method deleteVare
     *
     * @param vareID A parameter
     * @return The return value
     */
    public boolean deleteVare(int vareID)
    {
        return vCon.deleteVare(vareID);
    }

    /**
     * Method retPris
     *
     * @param vareID A parameter
     * @param pris A parameter
     * @return The return value
     */
    public boolean retPris(String loggetInd, int vareID, double pris)
    {
        boolean succes = false;
        String s = pCtr.findLoggetInd(loggetInd);
        int i = Integer.parseInt(s);
        Ansat a = pCtr.findAnsat(i);
        if(a instanceof Leder)
        {
            if(vCon.getVare(vareID) != null)
            {
                vCon.setPris(vareID, pris);
                succes = true;
            }
            else
            {
                System.out.println("Varen findes ikke");
            }
        }
        else
        {
            System.out.println("Du skal være logget ind som leder for at kunne rette pris");
        }

        return succes;
    }

    public void save() throws IOException
    {
        vCon.saveToFile();
    }

    public void load() throws IOException, ClassNotFoundException
    {
        vCon.loadFromFile();
    }

    /**
     * Method print
     *
     */
    public void print()
    {
        System.out.println("Liste over varer.");
        vCon.print();
    }
    
    
    
    
    
    
}
